from flask import Flask,render_template,request,make_response,session,jsonify

app=Flask(__name__)  # 定义一个flask的实例，后面会用他进行服务提供。
app.secret_key="12345678901234567"   # session 加密算法是一定，只有key是保密的。
app.config["JSON_AS_ASCII"]=False  # json 响应中的中文要正常显示
# 模拟访问woniusales首页，返回html页面

# 1.先获取一个woniusales页面，放到templates中即可 【templates 名字不要改】  [资源放到static中]

@app.route("/woniusales")   # 路由   [默认只支持get方法]
def home():
    return render_template("woniusales_79.html")

#2.模拟登录接口
@app.route("/woniusales/user/login",methods=["POST"])   # 指定此接口的请求方式是POST
def login():
    #如何获取上传的数据？ [用 flask 中的 request 获取]
    #request.form  是一个字典，用get方法在遇到没有对应key时，不会报错。
    u=request.form.get("username")
    p=request.form.get("password")
    v=request.form.get("verifycode")

    if v!="0000":
        return "vcode-error"
    elif u == "admin" and p=="admin123":
        # 登录成功，需要做cookie
        rs=make_response("login-pass",200)  # 创建一个响应  (第一个参数填写响应body，第二个参数填写响应状态码)
        rs.set_cookie("username","admin",max_age=60)  # 设置cookie （key，value，生命期秒）
        rs.set_cookie("password","admin123",max_age=60)
        # 登录成功，还需要 session
        session["IDsession"]=u   # 存的是u
        return rs  #返回响应
    else:
        return "login-fail"
# 3.模拟添加用户的接口

@app.route("/woniusales/customer/add",methods=["POST"])
def add_customer():
    # 获取客户端上传上来的cookie
    ck=request.cookies
    # 判断 身份是否合法
    if ck.get("password")=="admin123" and ck.get("username")=="admin" and session["IDsession"]=="admin":
        print("身份合法 ")

        return jsonify({"result":"添加成功","status":20001,"message": "success"})   #假设返回的是一个json格式。  {"result":"添加成功","status":20001,"message": "success"}
    else:
        return jsonify({"result":"添加失败","status":20002,"message": "fail"})

# 注销
@app.route("/woniusales/user/logout")  #默认就是get
def loginout():
    # 要让客户端消除session 和 cookie
    rs=make_response("注销成功",302,{"Location": "/woniusales"})  # 参数（body，status-code,headers）
    rs.delete_cookie("username")  # 消除 cookie username
    rs.delete_cookie("password")
    session.pop("IDsession")   # 消除 session
    return rs

if __name__ == '__main__':
    app.run(port=9999,debug=True)  #debug=True 表示开启调试模式，后面修改了代码按下ctrl+c 会自动重启服务。





